As one of error correcting coding/decoding processes in a third-generation mobile communication system, “code block segmentation” is proposed in the 3GPP technical standard document “TS 25.211 Ver3.1.0”.
Code block segmentation is a means for uniformly dividing data and it is the means used to send large amount of data (in case of high bit rate) when the whole data to be sent is divided into a plurality of blocks and subjected to error correcting coding one-by-one instead of subjecting the whole data to be sent to an error correcting coding (e.g., convolutional coding or turbo coding, etc.). In addition, a unit just before division of data is called “transport block”, and a unit that was connected after each transport block and further being divided is called “code block”.
For example, the amount of data to be sent at a particular time is 1000 pieces, the above-described code block segmentation divides the 1000 pieces into two portions of 500 and error correcting coding is performed two times, 500 pieces at a time. That is, 1000 pieces are divided into two portions that represent two code blocks, the first code block and the second code block each of 500 pieces.
When the number of data pieces is not divisible by the divisor, for example, when 1000 pieces are divided into three portions, the number of data of 1000 pieces is assumed to be 1002 which is divisible by 3 and the minimum number that exceeds 1000, and the 1002 pieces are divided into three code blocks, that is, the first codeblock (334 pieces), the second code block (334 pieces), and the third code block (334 pieces).
In this particular case, since the actual data is only 1000 pieces, the third code block will run short of the last two pieces. This problem is handled by assigning an appropriate value (e.g., “0”) to the last 2 pieces.
However, since such a conventional method uniformly divides the whole data to be sent, CRC-bit added prior to code block segmentation do not necessarily exist at the end of each code block.
Here, as shown in FIG. 5, the CRC-bit is added at the end of each data group called a “transport block” by CRC coding processing which is executed prior to code block segmentation. That is, CRC-bit is added for every transport block.
For example, as shown in FIG. 5, when the amount of data to be sent is 1000 pieces and the amount of data per one transport block including CRC-bit is 200 pieces, CRC-bit is added at the end of every 200 pieces of data.
Therefore, in such a case, if the whole data to be sent is divided into two blocks, the first code block and the second code block, then the CRC-bit of each transport block are scattered in the first code block and the second code block whereas the CRC-bit does not necessarily exist at the end of each code block. That is, referring to FIG. 5, in the first code block, the CRC-bit does not exist at the end position indicated by the arrow Y1.
When the receiving side performs error correcting decoding (e.g., turbo decoding), CRC-bit is used as decision criteria, but the CRC-bit that normally exists at the end of a data group does not exist at the end of the first code block as shown above, and therefore there is a problem that the error correcting decoding performance decreases and the communication quality deteriorates.